[UPDATE] Amazon IVSがAWS CloudFormationをサポートしました!
はじめに
清水です。本日お届けするアップデートはこちら!簡単にセットアップでき、しかも超低遅延な配信ができるAWSのライブストリーミングソリューションAmazon Interactive Video Service (Amazon IVS)がAWS CloudFormatioに対応しました!AWS Developer Forumsに2020/10/30にポストされたアップデートになります。
Amazon IVSをCloudFormationで作成してみた
では実際に、Amazon IVSのリソースをAmazon CloudFromationで作成してみたいと思います。CloudFormationのドキュメント内、テンプレートリファレンスを確認してみます。
以下の3つのリソースタイプが定義されていることがわかります。
通常のライブストリーミング配信のほか、プライベートチャンネルでの配信の構成もCloudFormationを用いて作成できそうですね。本エントリでは取り急ぎ、Channelリソースの作成をしてみたいと思います。AWS::IVS::Channelのドキュメント(テンプレートリファレンス)を参考に、以下のテンプレートファイルを作成しました。LatencyModeとTypeは、あえてデフォルトではない設定をしています。(LatencyModeならNORMAL、TypeならBASIC)
AWSTemplateFormatVersion: 2010-09-09 Resources: IVSChannel: Type: AWS::IVS::Channel Properties: Name: cfn-channel LatencyMode: NORMAL Type: BASIC Outputs: IVSChannelArn: Value: !Ref IVSChannel IVSChannelIngestEndpoint: Value: !GetAtt IVSChannel.IngestEndpoint IVSChannelPlaybackUrl: Value: !GetAtt IVSChannel.PlaybackUrl
このファイルからCloudFormationスタックを作成していきます。マネージメントコンソールでAmazon IVSをサポートしているリージョン(今回はus-west-2/Oregon)を選択し、Create stack画面でテンプレートファイルをアップロードします。
Stack nameを適切に入力し、進みます。
次の画面はそのまま[Next]で進み、最後のレビュー画面で内容を確認して[Create stack]します。
1分かかることなくすぐに、リソース作成が完了しCREATE_COMPLETEの状態になりました!
IVSのマネジメントコンソールでもリソースを確認してみましょう。問題なくリソースが作成されていますね。
なお、IVS ChannelのIngestEndpointやPlaybackURLについてはCloudFormationリソース作成時のReturn valueでも確認ができます。今回使用したCloudFormationテンプレートでもOutputsで出力していますが、以下のようになります。(IngestEndtpointについては先頭にrtmps://
、末尾に/app/
を入れておくとより良さそうですね。
なお、2020/10/31 18:30現在、私が確認した限りですが、以下のようなテンプレートファイルで、Channelリソースと同時にStreamKeyリソースを作成しようとすると「ivs.ServiceQuotaExceededException: Resource: stream-key quota exceeded limit: 1」というエラーになりリソースの作成が行えませんでした。(結果、ROLLBACKしてしまいます。) AWS::IVS::Channelのドキュメントページによると、AWS::IVS::Channelリソース作成時にはStreamKeyが作成されない(ので、AWS::IVS::StreamKeyリソースで別途作成する必要がある)とのことなのですが、実際には作成されてしまっているのかな?と推測しています。(いずれにせよ、AWS::IVS::StreamKeyリソースの作成も組み合わせることができれば、CloudFormationスタック作成時のOutputで配信に必要な情報がすベて確認できそうですね。)
AWSTemplateFormatVersion: 2010-09-09 Resources: Channel: Type: AWS::IVS::Channel Properties: Name: MyChannel Tags: - Key: MyKey Value: MyValue StreamKey: Type: AWS::IVS::StreamKey Properties: ChannelArn: !Ref Channel Tags: - Key: MyKey Value: MyValue Outputs: ChannelArn: Value: !Ref Channel ChannelIngestEndpoint: Value: !GetAtt Channel.IngestEndpoint ChannelPlaybackUrl: Value: !GetAtt Channel.PlaybackUrl StreamKeyArn: Value: !Ref StreamKey
まとめ
Amazon Interactive Video Service (Amazon IVS)でAWS CloudFormationを使ってリソースを作成してみました。Amazon IVSはリリース当時からAWS CLIでの対応はしていましたが、リソース構築などの選択肢が増えるのは嬉しいですね。またStreamKeyとの連携部分やプライベートチャンネル配信時に必要と思われるPlaybackKeyPairとの連携、リソースの更新時の挙動なども追って確認していきたいと思います。